home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xa;
-
- import com.extensibility.app.BaseAction;
- import com.extensibility.app.DialogFactory;
- import com.extensibility.app.UI;
- import com.extensibility.rock.RBevelBorder;
- import com.extensibility.rock.RTable;
- import com.extensibility.rock.Screen;
- import com.extensibility.rock.ScrollPop;
- import com.extensibility.rock.table.QlickerCellEditor;
- import com.extensibility.util.Debug;
- import com.extensibility.xa.undo.DeclTableClrActionUndoable;
- import com.extensibility.xml.BaseDeclaration;
- import com.extensibility.xml.ParserException;
- import com.extensibility.xml.URI;
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Dialog;
- import java.awt.Font;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.datatransfer.Clipboard;
- import java.awt.datatransfer.ClipboardOwner;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.awt.event.InputEvent;
- import java.awt.event.MouseEvent;
- import java.util.EventObject;
- import java.util.Vector;
- import javax.swing.JComponent;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JPopupMenu;
- import javax.swing.JTable;
- import javax.swing.KeyStroke;
- import javax.swing.SwingUtilities;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ListSelectionListener;
- import javax.swing.event.TableModelEvent;
- import javax.swing.event.TableModelListener;
- import javax.swing.table.TableCellEditor;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.text.JTextComponent;
-
- public abstract class DeclTable extends RTable implements ClipboardOwner, TableModelListener {
- static final int COL_ERRORS = 0;
- static final int COL_URI_ICON = 1;
- static final int COL_NAME = 2;
- static final DeclHeader defaultHeader = new DeclHeader();
- static final KeyStroke BACK_KEY = KeyStroke.getKeyStroke(37, 8);
- static final KeyStroke NEXT_KEY = KeyStroke.getKeyStroke(39, 8);
- ListSelectionListener selectionListener = new 6((DeclTable)null);
- ModeCorner corner;
- BaseDeclaration editingDecl;
- static DeclIconColumn rendIconCol = new DeclIconColumn();
- static final int FLAG_WIDTH = 16;
-
- public DeclTable(DeclTableModel var1) {
- super(var1);
- Font var2 = UI.getDocFont();
- if (var2 != null) {
- ((RTable)this).setFont(var2);
- }
-
- ((Component)this).addMouseListener(new URIPopper(this));
- }
-
- protected BaseAction createCheckinAction(URI var1) {
- return new 1(var1, this, "pop.uri.checkin", var1.getShortName());
- }
-
- protected BaseAction createUncheckoutAction(URI var1) {
- return new 2(var1, this, "pop.uri.uncheckout", var1.getShortName());
- }
-
- protected BaseAction createCheckoutAction(URI var1) {
- return new 3(var1, this, "pop.uri.checkout", var1.getShortName());
- }
-
- protected BaseAction createUnlockURIAction(URI var1) {
- return new 4(var1, this, "pop.uri.set.editable", var1.getShortName());
- }
-
- protected BaseAction createLockURIAction(URI var1) {
- return new 5(var1, this, "pop.uri.set.non.editable", var1.getShortName());
- }
-
- public final SchemaDoc getSchemaDoc() {
- return this.getDeclTableModel().getSchemaDoc();
- }
-
- protected void processMouseEvent(MouseEvent var1) {
- if (!var1.isPopupTrigger() && ((AWTEvent)var1).getID() != 505 && ((AWTEvent)var1).getID() != 504) {
- int var2 = ((JTable)this).columnAtPoint(var1.getPoint());
- ((JTable)this).rowAtPoint(var1.getPoint());
- if (var2 >= 0) {
- boolean var4 = var2 == 0 || var2 == 1;
- if (var4) {
- ((RTable)this).setEditMode(2);
- } else {
- ((RTable)this).setEditMode(1);
- }
- }
- }
-
- super.processMouseEvent(var1);
- }
-
- public DeclTableModel getDeclTableModel() {
- return (DeclTableModel)((JTable)this).getModel();
- }
-
- public void lostOwnership(Clipboard var1, Transferable var2) {
- }
-
- public void headerClick(MouseEvent var1, int var2) {
- BaseDeclaration var3 = this.getEditingDecl();
- BaseDeclaration var4 = var3 == null ? this.getSelectedDecl() : null;
- int var5 = ((JTable)this).getEditingColumn();
- if (((RTable)this).stopEditing()) {
- this.getDeclTableModel().sort(var2, !((InputEvent)var1).isShiftDown());
- if (var3 != null) {
- int var6 = this.getDeclTableModel().getRowForDecl(var3);
- if (var6 == -1) {
- return;
- }
-
- this.editCellAt(var6, var5);
- ((RTable)this).enforceEditorCellSelection();
- } else if (var4 != null) {
- this.select(var4);
- }
-
- }
- }
-
- public void addNotify() {
- super.addNotify();
- ((RTable)this).addListSelectionListener(this.selectionListener);
- ((JTable)this).getTableHeader().setToolTipText(UI.getString("tip.table.sort"));
- }
-
- public void removeNotify() {
- super.removeNotify();
- ((RTable)this).removeListSelectionListener(this.selectionListener);
- }
-
- public JComponent createCorner() {
- JPanel var1 = new JPanel();
- ((JComponent)var1).setBorder(new RBevelBorder());
- return var1;
- }
-
- public void showCell(int var1, int var2) {
- if (var2 < 5) {
- var2 = 0;
- }
-
- super.showCell(var1, var2);
- }
-
- public boolean select(BaseDeclaration var1) {
- if (!((RTable)this).stopEditing()) {
- return false;
- } else {
- int var2 = this.getDeclTableModel().getRowForDecl(var1);
- if (var2 == -1) {
- return false;
- } else {
- ((RTable)this).select(var2, 2);
- return true;
- }
- }
- }
-
- public JPopupMenu createCellPopup(MouseEvent var1, int var2, int var3, TableCellEditor var4) {
- BaseDeclaration var5 = null;
- ScrollPop var6 = new ScrollPop();
- if ((((JTable)this).getEditingRow() != var2 || ((JTable)this).getEditingColumn() != var3) && !((JTable)this).getSelectionModel().isSelectedIndex(var2) && var3 == 0) {
- ((RTable)this).select(var2);
- }
-
- if (var3 == 1) {
- return null;
- } else if (!((RTable)this).isUnlocked() && ((JTable)this).getSelectionModel().isSelectedIndex(var2)) {
- ((JPopupMenu)var6).add(super.cutAction);
- ((JPopupMenu)var6).add(super.copyAction);
- ((JPopupMenu)var6).add(super.pasteAction);
- ((JPopupMenu)var6).addSeparator();
- ((JPopupMenu)var6).add(super.clearAction);
- return var6;
- } else {
- if (((RTable)this).isUnlocked() && var4 instanceof QlickerCellEditor) {
- QlickerCellEditor var7 = (QlickerCellEditor)var4;
- Rectangle var8 = ((JTable)this).getCellRect(var2, var3, false);
- Point var9;
- if (((EventObject)var1).getSource() == var7) {
- var9 = var1.getPoint();
- } else {
- var9 = new Point(var1.getPoint().x - var8.x, var1.getPoint().y - var8.y);
- }
-
- String var10;
- if (((JTable)this).getEditingColumn() == var3 && ((JTable)this).getEditingRow() == var2) {
- var10 = var7.getText();
- } else {
- var10 = (String)((JTable)this).getModel().getValueAt(var2, var3);
- }
-
- String var11 = var7.getNameAtPoint(var10, var9);
- if (var11 != null && var11.length() > 0) {
- var5 = this.getDeclTableModel().getDeclaration(var2, var3, var11);
- }
-
- if (var5 != null) {
- ((JPopupMenu)var6).add(this.getSchemaWin().createGotoAction(var5));
- return var6;
- }
- }
-
- return null;
- }
- }
-
- public boolean pasteable() {
- Transferable var1 = Screen.getClip().getContents(this);
- DataFlavor var2 = this.getDeclTableModel().getRowFlavor();
- return var1 != null && var1.isDataFlavorSupported(var2);
- }
-
- public void cut() {
- this.copy();
- this.clear();
- }
-
- public void copy() {
- Clipboard var1 = Screen.getClip();
- Transferable var2 = this.getDeclTableModel().getTransferableData(((JTable)this).getSelectionModel());
- var1.setContents(var2, this);
- }
-
- protected BaseDeclaration paste(BaseDeclaration var1, SchemaDoc var2, SchemaDoc var3) throws Exception {
- return var3.insertDeclaration(var1, this.getSelectedDecl(), (Boolean)null, (Boolean)null, var2);
- }
-
- public void paste() {
- Clipboard var1 = Screen.getClip();
- Transferable var2 = var1.getContents(this);
- SchemaDoc var3 = this.getDeclTableModel().getSchemaDoc();
- int var4 = ((JTable)this).getSelectedColumn();
- int var5 = ((RTable)this).getSelectedRow();
- if (var2 != null && var2 instanceof ClipData && var2.isDataFlavorSupported(this.getDeclTableModel().getRowFlavor()) && ((ClipData)var2).getSchemaDoc() != null && ((ClipData)var2).getSchemaDoc().getSchema() != null) {
- try {
- DataFlavor var6 = this.getDeclTableModel().getRowFlavor();
- Vector var7 = (Vector)var2.getTransferData(var6);
-
- for(int var8 = 0; var8 < var7.size(); ++var8) {
- if (!((ClipData)var2).getSchemaDoc().getSchema().getFlavor().getFlavorName().equals(var3.getSchema().getFlavor().getFlavorName())) {
- DialogFactory.stop((Component)null, UI.getString("stop.paste.only.same.flavor"));
- return;
- }
-
- if (var6.getRepresentationClass().isInstance(var7.elementAt(var8))) {
- this.paste((BaseDeclaration)var7.elementAt(var8), ((ClipData)var2).getSchemaDoc(), var3);
- }
- }
- } catch (Exception var9) {
- DialogFactory.showException(this, 100, var9);
- }
-
- ((RTable)this).select(var5, var4);
- } else {
- ((Component)this).getToolkit().beep();
- }
- }
-
- public void clear() {
- DeclTableClrActionUndoable var1 = new DeclTableClrActionUndoable(this, this.getSchemaWin());
- if (var1.doClear()) {
- this.getSchemaWin().getSchemaDoc().getUndoManager().addEdit(var1);
- }
-
- }
-
- public void tableChanged(TableModelEvent var1) {
- switch (var1.getType()) {
- case -1:
- case 0:
- case 1:
- if (((RTable)this).getEditMode() != 2) {
- BaseDeclaration var2 = this.getEditingDecl();
- int var3 = this.getDeclTableModel().getRowForDecl(var2);
- if (var3 == -1 && var2 != null && (!(var2 instanceof AggregateAttributeDecl) || ((AggregateAttributeDecl)var2).getAttributesSize() != 0)) {
- var3 = this.getDeclTableModel().getRowByDeclName(var2.getName());
- }
-
- int var4 = ((JTable)this).getEditingRow();
- if (var2 == null) {
- var3 = this.getDeclTableModel().getNewRow();
- }
-
- if (!this.isCellEditable(var3, ((JTable)this).getEditingColumn())) {
- ((RTable)this).cancelEditing();
- }
-
- if (var3 == var4) {
- if (((JTable)this).getEditingColumn() == ((RTable)this).getLastEditingColumn() && var1.getType() == 0) {
- ((RTable)this).updateEditor(false);
- }
- } else if (var3 == -1) {
- ((RTable)this).cancelEditing();
- ((RTable)this).select(0);
- } else {
- ((JTable)this).setEditingRow(var3);
- }
-
- if (this.getSchemaWin() != null) {
- this.getSchemaWin().declarationFocused(this.getDeclTableModel().getDeclaration(var3));
- }
- }
- default:
- super.tableChanged(var1);
- }
- }
-
- private SchemaWin getSchemaWin() {
- return (SchemaWin)SwingUtilities.windowForComponent(this);
- }
-
- public void editingStopped(ChangeEvent var1) {
- super.editingStopped(var1);
- this.editingDecl = null;
- }
-
- public void editingCanceled(ChangeEvent var1) {
- super.editingCanceled(var1);
- this.editingDecl = null;
- }
-
- public boolean editCellAt(int var1, int var2) {
- boolean var3 = super.editCellAt(var1, var2);
- this.editingDecl = this.getDeclTableModel().getDeclaration(((JTable)this).getEditingRow());
- return var3;
- }
-
- public boolean editCellAt(int var1, int var2, EventObject var3) {
- boolean var4 = super.editCellAt(var1, var2, var3);
- this.editingDecl = this.getDeclTableModel().getDeclaration(((JTable)this).getEditingRow());
- return var4;
- }
-
- public BaseDeclaration getEditingDecl() {
- return this.editingDecl;
- }
-
- public BaseDeclaration getSelectedDecl() {
- int var1 = ((RTable)this).getSelectedRow();
- return var1 < 0 ? null : this.getDeclTableModel().getDeclaration(var1);
- }
-
- public ParserException validateCell(String var1) {
- return this.getDeclTableModel().validateCell(var1, ((JTable)this).getEditingRow(), ((JTable)this).getEditingColumn());
- }
-
- public TableCellRenderer createHeaderRenderer(int var1) {
- return defaultHeader;
- }
-
- public TableCellRenderer createCellRenderer(int var1) {
- switch (var1) {
- case 0:
- case 1:
- return rendIconCol;
- default:
- return super.createCellRenderer(var1);
- }
- }
-
- public int getInitialColumnWidth(int var1) {
- switch (var1) {
- case 0:
- case 1:
- return 16;
- default:
- return 0;
- }
- }
-
- public String getToolTipText(MouseEvent var1) {
- String var2 = null;
- Point var3 = var1.getPoint();
- int var4 = ((JTable)this).columnAtPoint(var3);
- int var5 = ((JTable)this).rowAtPoint(var3);
- if (var4 != -1 && var5 != -1) {
- var2 = this.getDeclTableModel().getToolTipText(var5, var4);
- }
-
- if (var2 == null) {
- var2 = super.getToolTipText(var1);
- }
-
- return var2 != null && var2.length() == 0 ? null : var2;
- }
-
- public boolean showCellDialog(int var1, int var2, EventObject var3) {
- JTextComponent var4 = ((RTable)this).getCellEditorAsJTextComponent();
- Debug.assert(var4 != null, "editor is not a text component as expected.");
- MiscCellDialog var5 = new MiscCellDialog(this, (JFrame)SwingUtilities.getRoot(this), this.getDeclTableModel().getSchemaDoc(), this.getDeclTableModel().getDeclaration(var1), var4.getText());
- var5.setTableInfo(var1, var2);
- ((Dialog)var5).show();
- return true;
- }
-
- public boolean isCellEditable(int var1, int var2) {
- return this.getDeclTableModel().isCellEditable(var1, var2);
- }
-
- public boolean searchable(int var1, int var2) {
- return var2 >= 2;
- }
-
- // $FF: synthetic method
- static SchemaWin access$6000071(DeclTable var0) {
- return var0.getSchemaWin();
- }
- }
-